package com.rogue.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.rogue.system.domain.dto.UserDTO;
import com.rogue.system.domain.dto.UserPageDTO;
import com.rogue.system.domain.entity.SysUser;
import com.rogue.system.domain.vo.UserRoleVo;
import com.rogue.system.domain.vo.UserVo;

/**
* @author Yeah
* @description 针对表【sys_user(用户表)】的数据库操作Service
* @createDate 2022-03-16 14:23:08
*/
public interface SysUserService extends IService<SysUser> {

    /**
     * 创建用户并且设置用户对应角色的权限
     * @author Yeah
     * @date 2022/3/20
     * @param userDTO
     * @return java.lang.Boolean
     */
    Boolean createUserAndRole(UserDTO userDTO);

    /**
     * 删除用户和对应的角色权限
     * @author YeahLiang
     * @date: 2022/03/21 11:55
     * @param id
     * @return java.lang.Boolean
     */
    Boolean removeUserAndRole(Long id);

    /**
     * 根据用户 id 锁定用户
     * @author YeahLiang
     * @date: 2022/03/21 11:46
     * @param id
     * @return java.lang.Boolean
     */
    Boolean lockUserById(Long id);

    /**
     * 根据用户 id 解锁用户
     * @author YeahLiang
     * @date: 2022/03/21 11:46
     * @param id
     * @return java.lang.Boolean
     * 根据用户 id 解锁用户
     */
    Boolean unlockUserById(Long id);

    /**
     * 根据用户 id 恢复用户
     * @author YeahLiang
     * @date: 2022/03/21 11:46
     * @param id
     * @return java.lang.Boolean
     */
    Boolean recoverUser(Long id);

    /**
     * 用户分页查询
     * @author YeahLiang
     * @date: 2022/03/21 15:11
     * @param userPageDTO 分页传输对象
     * @return com.rogue.system.domain.vo.UserPageVo
     */
    PageInfo<UserVo> listPageUser(UserPageDTO userPageDTO);

    UserRoleVo getUserAndRole(Long id);

    UserRoleVo getUserAndRoleByName(String name);
}
